package com.partsoft.dits;

import com.partsoft.dits.message.MessageEntity;


public interface DataReceiver extends DataIntegrateProcessor {

	/**
	 * 是否支持某数据描述符
	 * @param descriptorClazz 类型
	 * @return 返回true表示此处理器支持此数据描述符处理。
	 */
	boolean supportData(Class<? extends DataEdgeDescriptor> descriptorClazz);
	
	/**
	 * 是否支持某数据描述符
	 * @param dataDescriptor 描述
	 * @return 返回true表示此处理支持。
	 */
	boolean supportData(DataEdgeDescriptor dataDescriptor);
	
	/**
	 * 处理任务，通过{@link DataIntegrateBatch#getInputParameter()}传入{@link MessageEntity}实体。
	 * @param batch 参见{@link DataIntegrateBatch}。
	 */
	void process(DataIntegrateBatch batch);
	
	/**
	 * 接收消息
	 * @param dataDescriptor 指定的数据描述符
	 * @param msgEntity 消息实体
	 */
	void receiveData(DataEdgeDescriptor dataDescriptor, MessageEntity msgEntity);

	/**
	 * 接收消息
	 * @param msgEntity 消息实体
	 */
	void receiveData(MessageEntity msgEntity);
	
	/**
	 * 接收消息
	 * @param msgEntity 消息实体
	 * @param accepter 接收器
	 */
	void receiveData(MessageEntity msgEntity, DescriptorAccepter<EdgeDescriptor> accepter);
	
}
